一般在執行go run main.go後就會馬上回到命令列
這邊實作當接收到ctrl+c或是終止程式才停止
上程式碼:
func main() {
	fmt.Println("start")
	errs := make(chan error, 1)
	listenForSignal(errs)
	c := <-errs
	fmt.Println("terminating:", c)
}
func listenForSignal(errChan chan error) {
	go func() {
		c := make(chan os.Signal)
		signal.Notify(c, syscall.SIGINT, syscall.SIGTERM)
		errChan <- fmt.Errorf("%s", <-c)
	}()
}
說明:
然後執行go run main.go後,會看到服務就一直執行著,再按下ctrl+c
> go run main.go
start
^Cterminating: interrupt
先將main.go編譯成執行檔 -o代表放在目前目錄下 取名為demo
"./"執行demo這檔案
go build -o ./demo  main.go
 ./demo 
start
接下來開另一視窗 找出進程跟demo有關的pid 然後執行kill pid,確認已停止了
➜  ~ ps -A  | grep demo     
14693 ttys000    0:00.00 ./demo
➜  ~ kill 14693
➜  ~ ps -A  | grep demo
回到程式執行視窗就會看到以下被中止的訊息了
 ./demo
start
terminating: terminated
後記:不太知道到底要怎麼要在vscode debug模式
去模擬ctrl+c時會跑到的地方來看程式,google未有結果,無解